CREATE VIEW SalesCommissionsDetail
AS
SELECT
      A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.CODIGO_CLIENTE, E.FILIAL, 
      C.ID_VENDEDOR, C.VENDEDOR, D.VENDEDOR_APELIDO, D.NOME_VENDEDOR, D.COMISSAO AS ALIQUOTA, 
      D.CODIGO_FILIAL AS CODIGO_FILIAL_VENDEDOR, 
      SUM(CASE WHEN A.VALOR_PAGO = 0 OR F.VALOR < 0 THEN 0 ELSE ISNULL(F.VALOR * CASE WHEN A.VALOR_VENDA_BRUTA = 0 THEN 1 ELSE (A.VALOR_PAGO / A.VALOR_VENDA_BRUTA) END, 0) / CONVERT(FLOAT, A.VALOR_PAGO) END) AS FATOR_LINHA, 
      SUM(CASE WHEN A.VALOR_PAGO < 0 AND F.VALOR < 0 THEN ISNULL(F.VALOR * CASE WHEN A.VALOR_VENDA_BRUTA = 0 THEN 1 ELSE (A.VALOR_PAGO / A.VALOR_VENDA_BRUTA) END, 0) / CONVERT(FLOAT, A.VALOR_PAGO) ELSE 0 END) AS FATOR_LINHA_DEVOLUCAO, 
      SUM(CASE WHEN A.VALOR_CANCELADO = 0 OR F.VALOR < 0 THEN 0 ELSE ISNULL(F.VALOR_CANCELADO * CASE WHEN G.VENDA_BRUTA_CANCELADA = 0 THEN 1 ELSE (A.VALOR_CANCELADO / G.VENDA_BRUTA_CANCELADA) END, 0) / CONVERT(FLOAT, A.VALOR_CANCELADO) END) AS FATOR_LINHA_CANCELADA, 
      SUM(ISNULL(F.QTDE_VENDA, 0)) AS PECAS_PRODUTO, 
      SUM(ISNULL(F.QTDE_TROCA, 0)) AS PECAS_TROCA, 
      SUM(ISNULL(CASE WHEN F.VALOR < 0 THEN 0 ELSE F.VALOR END, 0)) AS VALOR_VENDA_BRUTA, 
      SUM(ISNULL(CASE WHEN F.VALOR > 0 THEN 0 ELSE ABS(F.VALOR) END, 0)) AS VALOR_TROCA, 
      SUM(ISNULL(CASE WHEN F.VALOR < 0 THEN F.VALOR ELSE ISNULL(F.VALOR * (1 - CASE WHEN A.VALOR_VENDA_BRUTA = 0 THEN 0 ELSE (A.VALOR_VENDA_BRUTA - A.VALOR_TROCA - A.VALOR_PAGO) / A.VALOR_VENDA_BRUTA END), 0) END, 0)) AS VALOR_VENDA, 
      SUM(CASE WHEN F.VALOR < 0 THEN 0 ELSE ISNULL(F.VALOR * CASE WHEN A.VALOR_VENDA_BRUTA = 0 THEN 1 ELSE (A.VALOR_PAGO / A.VALOR_VENDA_BRUTA) END, 0) END) AS VALOR_LIQUIDO_VENDA, 
      CASE WHEN COUNT(DISTINCT F.ID_VENDEDOR) = 1 THEN SUM(DISTINCT ISNULL(C.COMISSAO, 0)) ELSE SUM(ISNULL(C.COMISSAO, 0)) END AS VALOR_COMISSAO, 
      SUM(ISNULL(F.QTDE_ITENS, 0)) AS QTDE_ITENS_PRODUTO,
      SUM(ISNULL(F.QTDE_CANCELADA, 0)) AS PECAS_CANCELADAS_PRODUTO 
FROM
      LOJA_VENDA A
      INNER JOIN LOJA_VENDA_PGTO B ON A.CODIGO_FILIAL_PGTO = B.CODIGO_FILIAL AND A.TERMINAL_PGTO = B.TERMINAL AND A.LANCAMENTO_CAIXA = B.LANCAMENTO_CAIXA
      INNER JOIN LOJA_VENDA_VENDEDORES C ON A.CODIGO_FILIAL = C.CODIGO_FILIAL AND A.TICKET = C.TICKET AND A.DATA_VENDA = C.DATA_VENDA
      INNER JOIN LOJA_VENDEDORES D ON C.VENDEDOR = D.VENDEDOR
      INNER JOIN LOJAS_VAREJO E ON A.CODIGO_FILIAL = E.CODIGO_FILIAL
      LEFT JOIN 
            (
            SELECT
                  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO / COUNT(B.VENDEDOR) END AS VALOR, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_VENDA, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 1 ELSE CONVERT(NUMERIC(14, 2), CASE A.QTDE WHEN 0 THEN 0 ELSE 1 END / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_ITENS, 
                  CONVERT(NUMERIC(14, 2), 0) AS QTDE_TROCA, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE_CANCELADA * A.PRECO_LIQUIDO / COUNT(B.VENDEDOR) END AS VALOR_CANCELADO,   
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(FLOAT, A.QTDE_CANCELADA / CONVERT(FLOAT, COUNT(B.VENDEDOR))) END AS QTDE_CANCELADA  
                  
            FROM
                  LOJA_VENDA_PRODUTO A 
                  LEFT JOIN LOJA_VENDA_VENDEDORES B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TICKET = B.TICKET AND A.DATA_VENDA = B.DATA_VENDA AND A.ID_VENDEDOR = B.ID_VENDEDOR 
            WHERE
                  (A.ITEM_EXCLUIDO = 0 OR A.ITEM_EXCLUIDO IS NULL) -- AND A.QTDE_CANCELADA = 0
            GROUP BY
                  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.QTDE, A.PRECO_LIQUIDO, A.QTDE_CANCELADA
            UNION
            SELECT
                  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) * -1 END AS QTDE, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO / COUNT(B.VENDEDOR) * -1 END AS VALOR,
                  CONVERT(NUMERIC(14, 2), 0) AS QTDE_VENDA, 
                  CONVERT(NUMERIC(14, 2), 0) AS QTDE_ITENS, 
                  CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) * -1 END AS QTDE_TROCA, 
                  0 AS VALOR_CANCELADO, 
                  CONVERT(FLOAT, 0) AS QTDE_CANCELADA 
            FROM
                  LOJA_VENDA_TROCA A 
                  LEFT JOIN LOJA_VENDA_VENDEDORES B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TICKET = B.TICKET AND A.DATA_VENDA = B.DATA_VENDA AND A.ID_VENDEDOR = B.ID_VENDEDOR 
            WHERE
                  (A.ITEM_EXCLUIDO = 0 OR A.ITEM_EXCLUIDO IS NULL)
            GROUP BY
                  A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.QTDE, A.PRECO_LIQUIDO, A.QTDE_CANCELADA
            ) F ON C.CODIGO_FILIAL = F.CODIGO_FILIAL AND C.TICKET = F.TICKET AND C.DATA_VENDA = F.DATA_VENDA AND C.ID_VENDEDOR = F.ID_VENDEDOR
	LEFT JOIN W_DESCONTOS_VENDA_CANCELADA G ON A.CODIGO_FILIAL = G.CODIGO_FILIAL AND A.TICKET = G.TICKET AND A.DATA_VENDA = G.DATA_VENDA
GROUP BY
      A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.CODIGO_CLIENTE, E.FILIAL,
      C.ID_VENDEDOR, C.VENDEDOR, D.VENDEDOR_APELIDO, D.NOME_VENDEDOR, D.COMISSAO, D.CODIGO_FILIAL